home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 2 / Gekikoh Dennoh Club Vol. 2 (Japan).7z / Gekikoh Dennoh Club Vol. 2 (Japan) (Track 01).bin / fsw / zm302 / zm302_s.lzh / MPSRC045.LZH / P8_0104.HAS < prev    next >
Text File  |  1996-06-16  |  2KB  |  96 lines

  1. *=======================================================
  2. *
  3. *    8bitPCM 3.9kHz変換
  4. *
  5. *=======================================================
  6.  
  7. PCM8_0104_mac    macro        _vol
  8.  
  9.         moveq.l        #MIX_SIZE/2-1,d6    * 48 * 2 = 96 <= 127 で moveq OK
  10.         add.l        a0,d6
  11.         cmp.l        a3,d6
  12.         bcs        @f            * 今回の処理中にはトラップしない
  13.  
  14.         * トラップ判定付きの変換
  15.         moveq.l        #MIX_SIZE/2-1-1,d6
  16. 2:        cmpa.l        a3,a0            * トラップアドレス判定
  17.         bcs        1f
  18.         jsr        (a4)            * トラップ!
  19. 1:        move.b        (a0)+,d0        * PCMデータ取り込み
  20.         ext.w        d0            * 符号拡張
  21.         VOLUME        _vol,d0,d2
  22.         add.w        d0,(a1)+
  23.         add.w        d0,(a1)+
  24.         add.w        d0,(a1)+
  25.         add.w        d0,(a1)+
  26.         dbra        d6,2b
  27.  
  28. *        ラストの1回
  29.         cmpa.l        a3,a0
  30.         bcs        1f
  31.         jsr        (a4)            * トラップ!
  32. 1:        move.b        (a0)+,d0        * PCMデータ取り込み
  33.         ext.w        d0            * 符号拡張
  34.         move.w        d0,CH_LAST_PCM(a5)    * 前回変換終了時のPCM値 = d0.w
  35.         VOLUME        _vol,d0,d2
  36.         move.w        d0,CH_LAST_VPCM(a5)    * 最後のPCM値(音量変換後)
  37.         add.w        d0,(a1)+
  38.         add.w        d0,(a1)+
  39.         add.w        d0,(a1)+
  40.         add.w        d0,(a1)+
  41.  
  42.         move.l        a0,CH_PCM_ADR(a5)    * PCMアドレス = a0.l
  43.  
  44.         rts
  45.  
  46.  
  47.         * トラップ無しの変換
  48.  
  49. @@:        moveq.l        #MIX_SIZE/2-1-1,d6
  50. 2:        move.b        (a0)+,d0        * PCMデータ取り込み
  51.         ext.w        d0            * 符号拡張
  52.         VOLUME        _vol,d0,d2
  53.         add.w        d0,(a1)+
  54.         add.w        d0,(a1)+
  55.         add.w        d0,(a1)+
  56.         add.w        d0,(a1)+
  57.         dbra        d6,2b
  58.  
  59. *        ラストの1回
  60.         move.b        (a0)+,d0        * PCMデータ取り込み
  61.         ext.w        d0            * 符号拡張
  62.         move.w        d0,CH_LAST_PCM(a5)    * 前回変換終了時のPCM値 = d0.w
  63.         VOLUME        _vol,d0,d2
  64.         move.w        d0,CH_LAST_VPCM(a5)    * 最後のPCM値(音量変換後)
  65.         add.w        d0,(a1)+
  66.         add.w        d0,(a1)+
  67.         add.w        d0,(a1)+
  68.         add.w        d0,(a1)+
  69.  
  70.         move.l        a0,CH_PCM_ADR(a5)    * PCMアドレス = a0.l
  71.  
  72.         rts
  73.   
  74.         endm
  75.  
  76. *=======================================================
  77.  
  78. PCM8_0104_v00:    PCM8_0104_mac    0
  79. PCM8_0104_v01:    PCM8_0104_mac    1
  80. PCM8_0104_v02:    PCM8_0104_mac    2
  81. PCM8_0104_v03:    PCM8_0104_mac    3
  82. PCM8_0104_v04:    PCM8_0104_mac    4
  83. PCM8_0104_v05:    PCM8_0104_mac    5
  84. PCM8_0104_v06:    PCM8_0104_mac    6
  85. PCM8_0104_v07:    PCM8_0104_mac    7
  86. PCM8_0104_v08:    PCM8_0104_mac    8
  87. PCM8_0104_v09:    PCM8_0104_mac    9
  88. PCM8_0104_v10:    PCM8_0104_mac    10
  89. PCM8_0104_v11:    PCM8_0104_mac    11
  90. PCM8_0104_v12:    PCM8_0104_mac    12
  91. PCM8_0104_v13:    PCM8_0104_mac    13
  92. PCM8_0104_v14:    PCM8_0104_mac    14
  93. PCM8_0104_v15:    PCM8_0104_mac    15
  94. PCM8_0104_vnn:    PCM8_0104_mac    'n'
  95. PCM8_0104_non:    PCM8_0104_mac    'x'
  96.